$(function() {
	WASP_WIDGET.triggerSelectOnMenu("srcMenuId");
	$('#parentId').select2();
	$('#type').select2();
	$('#belongSystem').select2({
		placeholder : '所属系统'
	});
	initJqValidate();
	//初始化默认事件
	initDefaultEvent();
	//切换所属系统触发事件
	changeBelogSystem();
});

//所属系统
function changeBelogSystem(){
	$('#belongSystem').change('on',function(){
		$('#parentMenu').show();
		var belongSystem = $(this).val();
		//$('#belongSystem').val('');
		changeBelongSystem(belongSystem);
	});
}

/**
 * 选择不同的所属系统
 */
function changeBelongSystem(belongSystem){
	$.ajax({
		type : "POST",
		dataType : "json",
		url : ctx + 'sys/menu/changeBelongSystem.do?belongSystem=' + belongSystem,
		success : function(data) {
			if (data) {
				var optionStr = "<option value='0'>无</option>";
				for(var i=0;i<data.length;i++){
					var menuVo = data[i];
					optionStr += "<option value='"+menuVo.menuId+"'>"+menuVo.name+"</option>";
					var childs = menuVo.childs;
					for(var j=0;j<childs.length;j++){
						var childMenuVo = childs[j];
						optionStr += "<option value='"+childMenuVo.menuId+"'>|-&nbsp;"+childMenuVo.name+"</option>";
						for(var k=0;k<childMenuVo.length;k++){
							var childMenuEndVo = childMenuVo[k];
							optionStr += "<option value='"+childMenuEndVo.menuId+"'>&nbsp;&nbsp;&nbsp;|--&nbsp;"
									+childMenuEndVo.name+"</option>";
						}
					}
					
				}
				$('#parentId').html(optionStr);
				$("#parentId").val("0").select2();
			}
		},
		error : function(jqXHR, textStatus, errorThrown) {
			alert("后台查询数据错误" + textStatus);
		}
	});
}

function initDefaultEvent(){
	$('#descGroup').hide();
	$('#codeGroup').hide();
	$("#type").change( function() {
		var $this=$(this);
		if($this.val()=='1' || $this.val()=='2'){
			$('#descGroup').show();
			$('#codeGroup').show();
		}else{
			$('#descGroup').hide();
			$('#codeGroup').hide();
		}
		$this.valid && $this.valid();
	});
	$("#parentId").change( function() {
		var $type=$("#type");
		$type.valid && $type.valid();
	});
}

/**
 * 复制菜单
 * @returns {Boolean}
 */
function copyMenu() {
	var srcMenuId = $('#srcMenuId').find("option:selected").val();
	srcMenuId = (srcMenuId == undefined ? "" : srcMenuId);
	if (srcMenuId == "") {
		alert("请选择要复制的菜单/按钮/其他权限");
		return false;
	}
	var $parent = $(this).closest('form');
	$parent.find('input, textarea, select').val(null);

	$.ajax({
		type : "POST",
		dataType : "json",
		url : ctx + 'sys/menu/copyMenu.do?menuId=' + srcMenuId,
		success : function(data) {
			if (data.succeed) {
				if (data.result) {
					$("#name").val(data.result.name); 
					$("#url").val(data.result.url); 
				}
			} else {
				alert("复制菜单/按钮/其他权限数据错误：" + data.errmsg);
			}
		},
		error : function(jqXHR, textStatus, errorThrown) {
			alert("复制菜单/按钮/其他权限数据错误" + textStatus);
		}
	});

}



/**
 * 检查菜单名称是否存在
 */
jQuery.validator.methods["checkRepeatMenuNM"]=(function(value,element){
	var menuNM=$("#name").val();
	var success=false;
	$.ajax({
		type : "POST",
		async: false, 
		dataType : "json",
		url : ctx + 'sys/menu/checkRepeatMenuNM.do',
		data:{'menuNM':menuNM},
		success : function(data) {
			if (data.result===false) {
				//不存在同名才提交
				success= true;
			}else{
				success= false;
			}
		},
		error : function(data) {
			success= false;
		}
	});
	return success;
});

/**
 *  检查菜单URL是否存在
 */
jQuery.validator.methods["checkRepeatURL"]=(function(value,element){
	var url=$("#url").val();
	var success=false;
	$.ajax({
		type : "POST",
		async: false, 
		dataType : "json",
		url : ctx + 'sys/menu/checkRepeatURL.do',
		data:{'url':url},
		success : function(data) {
			if (data.result===false) {
				//不存在同名才提交
				success= true;
			}else{
				success= false;
			}
		},
		error : function(data) {
			success= false;
		}
	});
	return success;
});

/**
 * 当选择类型是按钮菜单类型，则必须挂在最终的叶子节点上
 */
jQuery.validator.addMethod("checkType", function(value,element){
	var type = $("#type").val();
	var parentId = $('#parentId').find("option:selected").val();
	parentId = (parentId == undefined ? "0" : parentId);
	var success = true;
	if (type == '1' || type == '2') {
		$.ajax({
			type : "POST",
			async : false,
			dataType : "json",
			url : ctx + 'sys/menu/hasSubMenu.do',
			data : {
				'parentId' : parentId
			},
			success : function(data) {
				if (data.result === true) {
					// 没有挂在最终的叶子节点，则不符合
					success = false;
				} else {
					success = true;
				}
			},
			error : function(data) {
				success = false;
			}
		});
	}
	var message = "";
	if (type == '1') {
		message = "按钮菜单类型，则父菜单必须是最终的叶子节点";
	} else if (type == '2') {
		message = "其他权限类型，则父菜单必须是最终的叶子节点";
	}
	$.validator.messages.checkType = message;
	return success;
});


function initJqValidate() {
	$("#menuAddForm").validate({
		focusCleanup : true,
		rules : {
			name : {
				required : true,
				checkRepeatMenuNM: true
			},
			url : {
				required : true,
				checkRepeatURL:true
			},
			sequence : {
				required : true,
				isNumber : true
			},
			type : {
				checkType : true
			},
			belongSystem : {
				required : true
			}
		},
		messages : {
			name : {
			    required:'请输入名称',
			    checkRepeatMenuNM: '名称已存在，请更换'
			    },
			url : {
				required : '请输入链接',
				checkRepeatURL : '链接已存在，请更换'
				},
			sequence : '请输入序列号,必须为数值',
			belongSystem : '请选择所属系统'
		}
	});
}

function dynamicJqValidate(type) {
	if ('0' == type) {
		$("#desc").rules("remove");
		$("#code").rules("remove");
	} else{
		$("#desc").rules("add", {
			required : true,messages:{required:"请输入按钮描述"}
		});
		$("#code").rules("add", {
			required : true,messages:{required:"请输入按钮代码"}
		});
	
	}
}

function submitMenuAddForm(){
	SubmitAndPreventSecond("menuAddForm",function(){
		var type=$("#type").val();
		dynamicJqValidate(type);
	});
}


